AWS Elastic BeanstalkでDockerコンテナをデプロイしてみた
ども、大瀧です。 本日、AWS Elastic BeanstalkでDockerコンテナがサポートされました(AWS公式ブログの記事)。
超簡単&高速でDocker on EC2+ELBの構成が組めるとんでもない機能です!
ひとまず、試してみた様子をレポートします。
手順
AWS Management ConsoleでElastic Beanstalkの管理画面を表示します。既存のBeanstalk構成がなければ、新規アプリケーションの作成画面になるので、[Select a Platform]から「Docker」を選択し、[Launch Now]をクリックします。
早速Beanstalkのスタック構成として、ELB(ロードバランサ)とDockerインストール済みのEC2インスタンス1台が起動します。[Health]の表示が「Green」になるまで待ちましょう。
続いて、Dockerコンテナの構成をデプロイします。[Upload and Deploy]をクリックします。
現在のBeanstalkでは以下3つのDocker構成が利用できます。
- Dockerfile
- 独自のDockerrun.aws.jsonファイル
- 上記の両ファイル+ADD用のファイルを含むZipアーカイブ
今回は、既存Dockerイメージをそのまま起動するシンプルな以下のDockerrun.aws.jsonファイルを作成し、アップロードしてみます。
Dockerrun.aws.json
{ "AWSEBDockerrunVersion": "1", "Image" : { "Name" : "dockerfile/ghost:latest" }, "Ports" : [{ "ContainerPort": "2368" }] }
例によって、ブログツールのGhostが入ったDockerイメージを使ってみます。Image::Nameに指定します。Ports - ContainerPortにはEC2の80番ポートからポートフォワードするポート番号を指定します。今回のGhostのDockerイメージでは2368番をListenするので、その番号を入れています。実際に動作するDockerイメージごとに調節してください。
その他、DockerfileおよびDockerrun.aws.jsonファイルの項目については、Elastic Beanstalkドキュメントを参照ください。
[Version Label]には、試しに1.0と入れてみました。[Deploy]をクリックし、デプロイを開始します。
また[Health]が「Green」になるまで、しばらく待ちます。
「Green」になったら、Dockerコンテナのデプロイは完了です。おもむろにBeanstalkのエンドポイント( Default-Environment-XXXXXXXX.elasticbeanstalk.com )にブラウザでアクセスすると...
Ghostの初期画面が表示されました!動かすまでであれば、すごく簡単にできました!
まとめ
Elastic BeanstalkでDockerコンテナを動かしてみました。
これだけ簡単にDockerコンテナがデプロイできる仕組みは、なかなかないんじゃないかと思います。さらに、この構成でもロードバランサがちゃんと組み込まれていますので、コンテナを実行するEC2を増やしてスケールアウトさせたり、Docker構成を変更して再デプロイする構成管理もしっかり仕組みとして備わっています。しかも、Beanstalk自体に費用は発生しません!!
Elastic Beanstalkは、開発環境から本番環境まで耐えうるDocker実行環境のスタンダードになる可能性を多いに秘めていると思います。皆さんもぜひ試してみてください!